package com.guit.hrms.mapper;

import com.guit.hrms.po.academy.Academy;
import com.guit.hrms.po.position.Position;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface PositionMapper {

    /**
     * 根据positionId获取岗位信息
     * @param positionId 岗位id
     * @return 岗位信息
     */
    @Select("select * from positions where position_id = #{positionId} and dept_type = #{deptType} and dept_id = #{deptId}")
    Position getPositionById(Integer positionId, Integer deptType, Integer deptId);

    /**
     * 根据positionNumber获取岗位信息
     * @param positionNumber 岗位编号
     * @return 岗位信息
     */
    @Select("select * from positions where position_number = #{positionNumber} and dept_type = #{deptType} and dept_id = #{deptId}")
    Position getPositionById2(String positionNumber, Integer deptType, Integer deptId);

    /**
     * 根据二级学院id删除其下岗位
     * @param academyId
     */
    @Delete("delete from positions where dept_id = #{academyId}")
    void deletePositionByAcademyId(Integer academyId);

    /**
     * 新增岗位
     * @param position
     */
    @Insert("insert into positions( position_number, position_name, position_properties, " +
            "job_description, dept_type, dept_id) " +
            "values (#{positionNumber},#{positionName},#{positionProperties}," +
            "#{jobDescription},#{deptType},#{deptId})")
    void addPosition(Position position);

    /**
     * 根据id更新岗位
     * @param position
     */
    void updateAcademyById(Position position);

    /**
     * 根据id删除岗位
     * @param positionId
     */
    @Delete("delete from positions where position_id = #{positionId}")
    void deleteAcademyById(Integer positionId);

    /**
     * 根据部门id获取岗位信息
     * @param otherDeptId
     * @return
     */
    @Select("select * from positions where dept_id = #{otherDeptId}")
    List<Position> getPositionByDeptId(Integer otherDeptId);

    /**
     * 根据部门id删除岗位
     * @param deptId
     */
    @Delete("delete from positions where dept_id = #{deptId}")
    void deletePositionByDeptId(Integer deptId);

    /**
     * 根据岗位id获取岗位信息
     * @param position 岗位id
     * @return 岗位信息
     */
    @Select("select * from positions where position_id = #{positionId}")
    Position selectPositionById(Integer position);

    /**
     * 根据岗位id更新岗位人数
     * @param positionNumber 岗位id
     * @param number 人数
     * @return 更新结果
     */
    @Update("update positions set person = person + #{number} where position_number = #{positionNumber}")
    Integer updatePositionPerson(String positionNumber, Integer number);

    /**
     * 根据岗位id更新岗位人数
     * @param positionId 岗位id
     * @param number 人数
     * @return 更新结果
     */
    @Update("update positions set person = person + #{number} where position_id = #{positionId}")
    Integer updatePositionPersonById(Integer positionId, Integer number);
}
